//Widget类的声明

#ifndef WIDGET_H
#define WIDGET_H
//推荐使用#pragma once

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

//创建项目时，选择的父类
//Qt SDK内置的，要想使用，需要包含对应的头文件
//Qt的设定，使用Qt中的内置类，包含的头文件的名字就是和类名一致的
//不是用到的所有的类都需要显式包含头文件
//C++头文件可能是"间接包含"的
//比如，引入a.h，但是a.h包含了b.h，相当于引入了a.h和b.h
//后续写代码的原则，一个Qt类，先拿过来用，如果能直接用，说明对应的头文件已经被间接包含，无需显式包含。
//如果这个类提示找不到定义，手动的显式的把对应的头文件给包含一下就行
class Widget : public QWidget
{
//  Qt内置的宏
//  宏本质上是文本替换
//  展开之后就会生成一大堆代码
//  Qt中有一个非常核心的机制，“信号和槽”,
//  如果某个类想使用“信号和槽”就需要引入Q_OBJECT这个宏
    Q_OBJECT

public:
//  构造函数：创建实例自动调用构造函数
//  Qt中引入了“对象树”机制
//  创建Qt的对象就可以把这个对象挂到对象树上
//  往树上挂的时候，需要指定“父节点”
//  树：一个节点可以有N个子节点，一个节点只能有一个父节点
//  对象树就是一个普通的N叉树
    Widget(QWidget *parent = nullptr);
//  析构函数：销毁实例自动调用
    ~Widget();

private:
//  和form file密切相关
    Ui::Widget *ui;
};
#endif // WIDGET_H
